﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.UI;
using System.Web.UI.WebControls;
using Controladores;
using Entidades;
using Web.Extensions;
using Web.Helpers;

namespace Web.Pages
{
    public partial class Login : BasePage
    {
        #region Events

        protected new void Page_Load(object sender, EventArgs e)
        {
            base.Page_Load(sender, e);

            if (!Page.IsPostBack)
            {
                this.CargarPagina();
            }
        }

        //private void TestSms()
        //{
        //    var parametroInfo = BasePage.Parametros.Obtener();
        //    var destinatarios = new Dictionary<string, string>
        //    {
        //        {String.Format(parametroInfo.SMSNumero, "541167151807"), String.Empty}
        //    };
        //    var asunto  =   parametroInfo.SMSClave;
        //    var cuerpo  =   "Recibiste un pago de Caja de Ruidos!" + Environment.NewLine + Environment.NewLine +
        //                    String.Format("El proyecto '{0}' fue pagado en {1}. ", "TOP SECRET", "BANCO" ) +
        //                    "El detalle se encuentra disponible en tu correo." + Environment.NewLine +
        //                    "Saludos!";
        //    MailHelper.MailClient().SendMail(destinatarios, asunto, cuerpo);
        //}

        #endregion

        #region Private Methods

        private void CargarPagina()
        {
            var estudios = Estudios.ObtenerTodos();
            this.selEstudio.Bind(estudios, "Id", "Texto");
        }

        #endregion

        #region WebMethods

        /// <summary>
        /// Envía mail de recuperación de password
        /// </summary>
        /// <param name="email"></param>
        /// <returns></returns>
        [WebMethod]
        public static string enviarMailRecuperacionPassword(string email)
        {
            var mensaje     = String.Empty;
            var resultado   = false;
            object valor    = null;
            try
            {
                var usuario = new ControladorBase<Usuario>().ObtenerEntidad(x => x.Email.ToLower() == email.ToLower());
                if (usuario.IsNotNull())
                {
                    // TODO => GET THE REAL STUDIO ID !! BUT AT THIS POINT THE USER DOES NOT NEED TO SELECT ANY STUDIO !!
                    var idEstudio = 1;
                    resultado = MailHelper.EnviarMailRecuperacionPassword(usuario, idEstudio);
                    mensaje = resultado ? "Se ha enviado el password a la casilla de email indicada." : "Hubo un error al enviar el mail de recuperación.";
                }
                else
                {
                    mensaje = "No existe Usuario asociado a esa casilla de email.";
                }
            }
            catch (Exception ex)
            {
                LogError(ex);
                mensaje = "Hubo un error al enviar el mail de recuperación." + Environment.NewLine + ex.Message;
            }
            return SessionHelper.BuildResponse(mensaje, resultado, valor);
        }

        #endregion
    }
}